float_bits float_i2f(int i){  
if(i==0)  
return 0;  
unsigned sign=0;  
unsigned frac=i;  
if(i&0x80000000){  
sign=1;  
frac=~frac+1;  
}  
unsigned c=0;  
while (!(frac&0x80000000))  
{  
frac=frac<<1;  
++c;  
}  
unsigned exp= (31-c)+127;  
frac=frac<<1;  
frac=(frac>>9)+((frac&0x100)&&((frac&0x200)||(frac&0xff)));
if(frac&0x800000)   
++exp;  
  
  
return (sign<<31) | (exp<<23) | (frac&0x7fffff);  
}  
